//package io.iec.edp.caf.context;
//
//
//import io.iec.edp.caf.commons.utils.SpringBeanUtils;
//import io.iec.edp.caf.boot.context.CAFBizContextHolder;
//import io.iec.edp.caf.context.core.CafFrameworkContextHolder;
//import io.iec.edp.caf.context.core.entity.FrameworkContext;
//import io.iec.edp.caf.session.core.CafSession;
//import io.iec.edp.caf.commons.dataaccess.DbType;
//import io.iec.edp.caf.msu.api.ServiceUnitAwareService;
//import io.iec.edp.caf.boot.security.CAFSecurityWebSessionHolder;
//import io.iec.edp.caf.core.session.CafSessionThreadHolder;
//import io.iec.edp.caf.core.context.BizContext;
//import io.iec.edp.caf.tenancy.api.TenantService;
//import io.iec.edp.caf.tenancy.api.context.RequestTenantContextInfo;
//import io.iec.edp.caf.tenancy.api.context.RequestTenantContextHolder;
//
//import java.time.OffsetDateTime;
//
///**
// * ICAFContextService 实现类
// * CAFContext已经提供出去被大量使用了，不宜再修改，桥接一把
// *
// * @author wangyandong
// * @date 2019/10/23 17:42
// *
// */
//public class CafContextServiceImpl implements CafContextService {
//    private TenantService tenantService = null;
//    private ServiceUnitAwareService serviceUnitAware;
//    private DbType masterDbType = DbType.Unknown;
//    private static final ThreadLocal<String> tlCurrentSU = new InheritableThreadLocal<>();
//    private String startupPath;
//
//    /**
//     * 私有构造函数，防止开发人员直接创建
//     */
//    public CafContextServiceImpl() {
//
//    }
//
//    /**
//     * 获取当前的Session对象
//     */
//
//    public CafSession getCurrentSession() {
//        //首先尝试获取HttpSession
//        CafSession session = CAFSecurityWebSessionHolder.getCafSession();
//        if (session == null) {
//            //如果HttpSession为null，尝试从线程上下文获取
//            session = CafSessionThreadHolder.getCurrentSession();
//        }
//        return session;
//    }
//
//    /**
//     * 获取业务Context
//     */
//    public BizContext getBizContext() {
//        return CAFBizContextHolder.getCurrentContext().orElse(null);
//    }
//
//
//    /**
//     * 获取框架Context
//     */
//    public FrameworkContext getFrameworkContext() {
//        return CafFrameworkContextHolder.getCurrentContext().orElse(null);
//    }
//
//    /**
//     * 获取当前的BizContextId
//     */
//    public String getContextId() {
//        BizContext context = this.getBizContext();
//        if (context != null)
//            return context.getId();
//        return null;
//    }
//
//
//    /**
//     * 获取当前SU编号
//     */
//    public String getCurrentSU() {
//        return tlCurrentSU.get();
//    }
//
//    /**
//     * 获取当前SU编号
//     *
//     * @param su
//     */
//    public void setCurrentSU(String su) {
//        if(this.serviceUnitAware ==null)
//            this.serviceUnitAware = SpringBeanUtils.getBean(ServiceUnitAwareService.class);
//        //传入的su大小写存在与标准写法不一致的情况，匹配一下再设置
//        String realSuName= su;
//        if(su!=null && !"".equals(su)){
//            realSuName = this.serviceUnitAware.getEnabledServiceUnits()
//                .stream()
//                .filter(d -> su.equalsIgnoreCase(d))
//                .findFirst()
//                .orElse(su);
//        }
//        tlCurrentSU.set(realSuName);
//    }
//
//    /**
//     * 获取Session标识
//     */
//    public String getSessionId() {
//        CafSession session = this.getCurrentSession();
//        if (session == null)
//            return null;
//        return session.getId();
//    }
//
//    /**
//     * 获取租户标识
//     */
//    public int getTenantId() {
//        RequestTenantContextInfo tenantContextInfo = RequestTenantContextHolder.get();
//        if (tenantContextInfo != null) {
//            return tenantContextInfo.getTenantId();
//        }
//
//        CafSession session = this.getCurrentSession();
//        if (session == null)
////            throw new RuntimeException("无效的Session");
//            return -1;
//        return session.getTenantId();
//    }
//
//    /**
//     * 用户编号
//     */
//    public String getUserId() {
//        CafSession session = this.getCurrentSession();
//        if (session == null)
//            return null;
//        return session.getUserId();
//    }
//
//    /**
//     * 获取实例编号
//     */
//    public String getAppCode() {
//        return "pg01";
//    }
//
//    /**
//     * 获取登录时间
//     */
//    public OffsetDateTime getLoginTime() {
//        CafSession session = this.getCurrentSession();
//        if (session == null)
//            return null;
//        return session.getCreationDate().toOffsetDateTime();
//    }
//
//    /**
//     * 获取当前语言
//     */
//    public String getLanguage() {
//        CafSession session = this.getCurrentSession();
//        if (session == null)
//            return null;
//        return session.getLanguage();
//    }
//
//    /**
//     * 获取系统当前时间
//     */
//    public OffsetDateTime getCurrentDateTime() {
//        return OffsetDateTime.now();
//    }
//
//    /**
//     * 获取租户服务
//     */
//    private TenantService getTenantService() {
//        if (this.tenantService == null) {
//            TenantService service = SpringBeanUtils.getBean(TenantService.class);
//            this.tenantService = service;
//        }
//        return this.tenantService;
//    }
//}
